-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

=============================================================================
FreeBSD-SA-06:16.smbfs                                      Security Advisory
                                                          The FreeBSD Project

Topic:          smbfs chroot escape

Category:       core
Module:         smbfs
Announced:      2006-05-31
Credits:        Mark Moseley
Affects:        All FreeBSD releases.
Corrected:      2006-05-31 22:31:21 UTC (RELENG_6, 6.1-STABLE)
                2006-05-31 22:31:42 UTC (RELENG_6_1, 6.1-RELEASE-p1)
                2006-05-31 22:32:04 UTC (RELENG_6_0, 6.0-RELEASE-p8)
                2006-05-31 22:32:22 UTC (RELENG_5, 5.5-STABLE)
                2006-05-31 22:32:49 UTC (RELENG_5_5, 5.5-RELEASE-p1)
                2006-05-31 22:33:17 UTC (RELENG_5_4, 5.4-RELEASE-p15)
                2006-05-31 22:33:41 UTC (RELENG_5_3, 5.3-RELEASE-p30)
                2006-05-31 22:34:32 UTC (RELENG_4, 4.11-STABLE)
                2006-05-31 22:34:53 UTC (RELENG_4_11, 4.11-RELEASE-p18)
                2006-05-31 22:35:32 UTC (RELENG_4_10, 4.10-RELEASE-p24)
CVE Name:       CVE-2006-2654

For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit
<URL:http://www.freebsd.org/security/>.

I.   Background

smbfs is a network file-system used to access file servers using the
SMB/CIFS protocol.  chroot(2) is system call designed to limit a
process's access to a particular subset of a file-system.

II.  Problem Description

smbfs does not properly sanitize paths containing a backslash
character; in particular the directory name '..\' is interpreted as
the parent directory by the SMB/CIFS server, but smbfs handles it in
the same manner as any other directory.

III. Impact

When inside a chroot environment which resides on a smbfs mounted
file-system it is possible for an attacker to escape out of this
chroot to any other directory on the smbfs mounted file-system.

IV.  Workaround

Mount the smbfs file-systems which need to be used with chroot on top,
in a way so the chroot directory is exactly on the mount point and not
a sub directory.

V.   Solution

Perform one of the following:

1) Upgrade your vulnerable system to 4-STABLE, 5-STABLE, or 6-STABLE,
or to the RELENG_6_1, RELENG_6_0, RELENG_5_5, RELENG_5_4, RELENG_5_3,
RELENG_4_11, or RELENG_4_10 security branch dated after the correction
date.

2) To patch your present system:

The following patches have been verified to apply to FreeBSD 4.10,
4.11, 5.3, 5.4, 5.5, 6.0, and 6.1 systems.

a) Download the relevant patch from the location below, and verify the
detached PGP signature using your PGP utility.

# fetch http://security.FreeBSD.org/patches/SA-06:16/smbfs.patch
# fetch http://security.FreeBSD.org/patches/SA-06:16/smbfs.patch.asc

b) Apply the patch.

# cd /usr/src
# patch < /path/to/patch

c) Recompile your kernel as described in
<URL:http://www.freebsd.org/handbook/kernelconfig.html> and reboot the
system.

VI.  Correction details

The following list contains the revision numbers of each file that was
corrected in FreeBSD.

Branch                                                           Revision
  Path
- -------------------------------------------------------------------------
RELENG_4
  src/sys/fs/smbfs/smbfs_vnops.c                                 1.2.2.11
RELENG_4_11
  src/UPDATING                                             1.73.2.91.2.19
  src/sys/conf/newvers.sh                                  1.44.2.39.2.22
  src/sys/fs/smbfs/smbfs_vnops.c                             1.2.2.10.4.1
RELENG_4_10
  src/UPDATING                                             1.73.2.90.2.25
  src/sys/conf/newvers.sh                                  1.44.2.34.2.26
  src/sys/fs/smbfs/smbfs_vnops.c                             1.2.2.10.2.1
RELENG_5
  src/sys/fs/smbfs/smbfs_vnops.c                                 1.46.2.2
RELENG_5_5
  src/UPDATING                                             1.342.2.35.2.1
  src/sys/conf/newvers.sh                                   1.62.2.21.2.3
  src/sys/fs/smbfs/smbfs_vnops.c                             1.46.2.1.4.1
RELENG_5_4
  src/UPDATING                                            1.342.2.24.2.24
  src/sys/conf/newvers.sh                                  1.62.2.18.2.20
  src/sys/fs/smbfs/smbfs_vnops.c                             1.46.2.1.2.1
RELENG_5_3
  src/UPDATING                                            1.342.2.13.2.33
  src/sys/conf/newvers.sh                                  1.62.2.15.2.35
  src/sys/fs/smbfs/smbfs_vnops.c                                 1.46.4.1
RELENG_6
  src/sys/fs/smbfs/smbfs_vnops.c                                 1.61.2.2
RELENG_6_1
  src/UPDATING                                             1.416.2.22.2.3
  src/sys/conf/newvers.sh                                   1.69.2.11.2.3
  src/sys/fs/smbfs/smbfs_vnops.c                             1.61.2.1.2.1
RELENG_6_0
  src/UPDATING                                             1.416.2.3.2.13
  src/sys/conf/newvers.sh                                    1.69.2.8.2.9
  src/sys/fs/smbfs/smbfs_vnops.c                                 1.61.4.1
- -------------------------------------------------------------------------

VII. References

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-2654

The following three references correspond to independent bugs which
affect the Linux kernel but have the same impact:
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-1863
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-1864
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=189434

The latest revision of this advisory is available at
http://security.FreeBSD.org/advisories/FreeBSD-SA-06:16.smbfs.asc
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (FreeBSD)

iD8DBQFEfhueFdaIBMps37IRAquuAJ0eCPAahUu19kdTjKpVHrrtQ9q16gCfZ5sC
xknjanFlpMxJAZ7iYSxBvcI=
=PvoL
-----END PGP SIGNATURE-----
